package com.fight.strive.sys.modules.auth.service;

import com.fight.strive.sys.modules.auth.dto.StriveAuthInfo;
import com.fight.strive.sys.modules.validator.StriveValid;

public interface StriveAuthService {

    /**
     * 登录，并返回token
     *
     * @param info info
     * @return token
     */
    StriveAuthInfo login(@StriveValid StriveAuthInfo info);

    /**
     * 登出，删除 token 信息
     */
    void logout();

    /**
     * 根据登录名删除缓登录信息
     *
     * @param loginName login name
     */
    void logoutByLoginName(String loginName);

    /**
     * 获取当前登录用户信息
     *
     * @return info
     */
    StriveAuthInfo getCurrentAuth();

    /**
     * 根据 token 获取用户信息
     *
     * @param token token
     * @return strive auth
     */
    StriveAuthInfo getAuthByToken(String token);

    /**
     * 更新 token 缓存信息
     *
     * @return 登录信息
     */
    StriveAuthInfo updateAuthInfo();

    /**
     * 更新 token 缓存信息
     *
     * @param loginName 登录名
     * @return 登录信息
     */
    StriveAuthInfo updateAuthInfoByLoginName(String loginName);

    /**
     * 更新 redis
     *
     * @param info info
     */
    void updateCache(StriveAuthInfo info);

    /**
     * 退出时删除 redis
     *
     * @param info info
     */
    void removeCache(StriveAuthInfo info);
}
